草庐IT

vc x86.mis

全部标签

c# - x64 与 x86 性能考虑因素.Net

我试图了解在x64和x86中运行nativeC#/.Net4.0应用程序时存在哪些性能差异。我理解内存注意事项(x64寻址所有内存,x86限制为2/4gb),以及x64应用程序将使用更多内存(所有指针都是8字节而不是4字节)这一事实。据我所知,这些都不会影响时钟指令的任何时钟,因为x64管道足够宽,可以处理更宽的指令。由于每个线程的堆栈大小较大,上下文切换是否会影响性能?在评估这两者时,我遗漏了哪些性能考虑因素? 最佳答案 JoeWhite已经为您提供了一些很好的理由说明您的应用程序可能会变慢。更大的指针(因此在.NET中扩展为更大

c# - 在位置 C :\Program Files (x86)\Microsoft visual studio 11. 0 找不到 ildasm.exe

VisualStudio2012的开发人员命令提示如何搜索ildasm.exe的位置。运行命令窗口Visualstudio2012的开发人员命令提示符将指向位置C:\ProgramFiles(x86)\Microsoftvisualstudio11.0但在此位置ildasm.exe不能找不到。实际上在命令窗口输入ildasm.exe会打开ildasm工具。任何人都可以阐明VisualStudio2012的开发人员命令提示符是如何找到物理ildasm.exe的。 最佳答案 当您启动VisualStudio2012的开发人员命令提示符时

c# - Entity Framework 在 x64 和 x86 上的启动速度要慢得多

我的同事昨天发布了这个问题:7-secondEFstartuptimeevenfortinyDbContext.在获取他的代码并将其移动到一个单独的解决方案以尽可能地隔离它之后,我发现包含项目的平台目标对EF启动过程的运行时产生了深远的影响。当以x64为目标时,我发现测试用了约7秒来启动第一个DbContext,用了鉴于此,EntityFramework在针对64位系统和32位系统时似乎正在经历一个截然不同的初始化过程。有没有人深入了解幕后发生的事情来解释这一点? 最佳答案 这个问题是完全可重现的。我刚刚运行它并使用dotTrace

c# - 将 .NET 应用程序转换为 x86 native 代码

有一个完全用C#编写的面向.NETFramework2.0的程序。有没有一种方法可以以某种方式将托管EXE编译(翻译)为nativeEXE,使其与.NET无关?我知道可能有用于该目的的商业产品...但它们有点贵。问题是我们要在运行WindowsXP且未安装.NETFramework的计算机上部署该程序。还有一个要求是程序的大小不能超过500Kb(最大1Mb),因为它是从Web服务器下载的(现在大小是255Kb)。这就是为什么我们无法将完整的.NETFX(甚至是简化的)附加到下载程序的文件中。显然,这是一个可怕的软件工程错误,应该及早发现并避免,这样我们就可以改用C++等原生技术。我们目

c# - 使用 AllocConsole 和目标体系结构 x86 时没有控制台输出

我有一个WinForms项目,如果用户想要一个调试控制台,我会使用AllocConsole()分配一个控制台。所有控制台输出在目标体系结构设置为“AnyCPU”时正常工作,但是当我将其更改为“x86”时,它不会输出任何内容(Console.Read()仍然可以作为预期的)。如果我直接打开EXE,输出有效。看起来VisualStudio将其重定向到它自己的“输出”窗口。我也试过this回答,但是没有用,我也试了Console.SetOut(GetStdHandle(-11)),也没用。将目标架构设置为“任何CPU”对我来说不是一个选项。所以这是我的两个问题:为什么只有当目标架构设置为x8

c# - 将 Visual Studio C# 项目从 x86 更改为任何 CPU

我正在使用VisualStudio2005进行一些C#项目,我正在尝试将平台目标从x86更改为任何CPU。我已经检查了我所知道的所有依赖项,并确保它们也是使用corflags工具为任何CPU构建的。当我在VisualStudio2005中更改平台目标时,它似乎保存了更改,但是当我构建项目时它仍然使用x86。下次我打开项目时,平台目标已重置为x86。这只发生在解决方案中的几个项目中,这是否意味着某处还有其他32位依赖项?我可以在命令行上使用/platform:anycpu手动运行C#编译器,我没有收到错误,但我不确定这样做是否正确,我希望能够在VisualStudio中构建。我该怎么做才

c# - 是否可以从 C# 中执行 x86 汇编序列?

继续我的逆向工程教育,我经常希望能够复制部分x86汇编代码,并从我选择的高级语言中调用它进行测试。有人知道从C#方法中调用x86指令序列的方法吗?我知道这可以使用C++完成,但我很好奇它是否可以在C#中完成?注意:我不是在谈论执行MSIL指令。我说的是执行一系列原始x86汇编指令。 最佳答案 为了反驳Brian的说法,重写了leppie的回答中的代码link:usingSystem;usingSystem.Collections.Generic;usingSystem.Runtime.InteropServices;namespac

c# - C# 中的 x86/x64 CPUID

与myotherquestion相关,请帮助我调试“未知模块中发生类型为‘System.AccessViolationException’的未处理异常。附加信息:尝试读取或写入protected内存。这通常表明其他内存已损坏。”单步执行代码,一切正常,直到实际调用del()并在该行失败。此代码基于此article'ssample还有这个pythoncode在python中工作。我也无法让代码示例按原样工作(同样的异常(exception)),但我希望它只是有点过时了。编辑:如果您关心我们如何到达这里,请查看编辑历史,这很无趣。完成的工作版本:publicstaticclassCpuID

C# 'is' 结构类型检查 - 奇怪的 .NET 4.0 x86 优化行为

更新:我已经提交了bugreportMicrosoftConnect,请为它投票!更新2:Microsoft已将错误报告标记为已修复PostedbyMicrosofton18/08/2010at17:25Thisbugwillbefixedinafutureversionoftheruntime.I'mafraidit'stooearlytotellifthatwillbeinaservicepackorthenextmajorrelease.自升级到VS2010后,“is”关键字出现了一些非常奇怪的行为。下面的程序(test.cs)在Debug模式下编译时(对于x86)输出True,

c# - 在 'Any CPU' .NET 程序集上强制执行 x86 CLR

在.NET中,“平台目标:任何CPU”编译器选项允许.NET程序集在x64机器上以64位运行,在x86机器上以32位运行。也可以使用“平台目标:x86”编译器选项强制程序集在x64机器上作为x86运行。是否可以运行带有“任何CPU”标志的程序集,但确定它应该在x86还是x64CLR中运行?通常,这个决定是由CLR/OS加载器(据我所知)基于底层系统的位数做出的。我正在尝试编写一个C#.NET应用程序,它可以与其他正在运行的进程交互(阅读:将代码注入(inject))。x64进程只能注入(inject)其他x64进程,x86也一样。理想情况下,我想利用JIT编译和AnyCPU选项来允许使